// app/_layout.tsx
import React from 'react';
import { Provider as AntDesignProvider } from '@ant-design/react-native'; // 导入 Ant Design Provider 并设置别名
import { DarkTheme, DefaultTheme, ThemeProvider as NavigationThemeProvider } from '@react-navigation/native'; // 也给导航的 ThemeProvider 设置了别名，更清晰
import { useFonts } from 'expo-font';
import { Stack } from 'expo-router';
import { StatusBar } from 'expo-status-bar'; // 确保 StatusBar 也被 Provider 包裹
import 'react-native-reanimated';

import { useColorScheme } from '@/hooks/useColorScheme'; // 假设这是您项目中获取颜色方案的 hook

export default function RootLayout() {
  const colorScheme = useColorScheme(); // 获取当前颜色方案 ('light' 或 'dark')
  const [loaded, error] = useFonts({ // useFonts 返回 [loaded, error]
    SpaceMono: require('../assets/fonts/SpaceMono-Regular.ttf'),
    // 如果 Ant Design 依赖特定字体，或者您想为 Ant Design 组件全局设置字体，可以在这里加载
    // 例如，某些版本的 antd-mobile-rn 可能有默认字体或推荐字体
  });

  // Expo Router 推荐在 _layout 中处理字体加载和启动屏
  // useEffect(() => {
  //   if (loaded || error) {
  //     SplashScreen.hideAsync(); // 如果使用了 expo-splash-screen
  //   }
  // }, [loaded, error]);

  if (!loaded && !error) { // 在字体加载完成且无错误前，可以返回 null 或加载指示器
    return null;
  }

  return (
    // 1. 最外层使用 Ant Design Provider
    <AntDesignProvider>
      {/* 2. 内部是 React Navigation 的 ThemeProvider */}
      <NavigationThemeProvider value={colorScheme === 'dark' ? DarkTheme : DefaultTheme}>
        {/* StatusBar 最好也放在 ThemeProvider 内部，确保其样式能感知主题变化，
            或者根据您的设计需求放在 AntDesignProvider 内部。
            通常放在导航结构内部或旁边是常见的。*/}
        <StatusBar style={colorScheme === 'dark' ? 'light' : 'dark'} />
        <Stack
          screenOptions={{
            // 可以在这里设置全局的 Stack Screen 样式
            // headerShown: false, // 如果大部分屏幕都不需要头部
          }}
        >
          <Stack.Screen name="(tabs)" options={{ headerShown: false }} />
          <Stack.Screen name="LoginPage" options={{ headerShown: false }} />
          <Stack.Screen name="FamilyPage" options={{ headerShown: false }} />
          <Stack.Screen name="FirstPage" options={{ headerShown: false }} />
          <Stack.Screen name="RegisterPage" options={{ headerShown: false }} />
          <Stack.Screen name="InitialFamilyPage" options={{ headerShown: false }} />
          <Stack.Screen name="index" options={{ headerShown: false }} />
          <Stack.Screen name="+not-found" />
          <Stack screenOptions={{ headerShown: false }}></Stack>
          {/* 如果有其他全局的 Stack Screen，在这里添加 */}
          {/* 例如: <Stack.Screen name="settings" options={{ title: '设置' }} /> */}
        </Stack>
      </NavigationThemeProvider>
    </AntDesignProvider>
  );
}


// import { DarkTheme, DefaultTheme, ThemeProvider } from '@react-navigation/native';
// import { useFonts } from 'expo-font';
// import { Stack } from 'expo-router';
// import { StatusBar } from 'expo-status-bar';
// import 'react-native-reanimated';

// import { useColorScheme } from '@/hooks/useColorScheme';

// export default function RootLayout() {
//   const colorScheme = useColorScheme();
//   const [loaded] = useFonts({
//     SpaceMono: require('../assets/fonts/SpaceMono-Regular.ttf'),
//   });

//   if (!loaded) {
//     // Async font loading only occurs in development.
//     return null;
//   }

//   return (
//     <ThemeProvider value={colorScheme === 'dark' ? DarkTheme : DefaultTheme}>
//       <Stack>
//         <Stack.Screen name="(tabs)" options={{ headerShown: false }} />
//         <Stack.Screen name="+not-found" />
//       </Stack>
//       <StatusBar style="auto" />
//     </ThemeProvider>
//   );
// }
